lock
方法通过使用select … for update
的SQL语句来获得悲观锁。
def book = Book.get(1) book.lock()
lock
方法会获得一个实例上的悲观锁,实质上用SQL语句select … for update
锁住数据库的一行。这个方法和Hibernate里使用LockMode.UPGRADE 结合 lock方法一样。
当事务提交时,锁自动被释放。Grails里,某个action结束执行后,通常会这么做。
可参考用户手册的Optimistic and Pessimistic locking章节。